package com.cnzhy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @Author: zhaoyan5
 *
 * Feign 是在 Ribbon的基础上进行了一次改进，是一个使用起来更加方便的 HTTP 客户端。
 * 采用接口的方式，只需要创建一个接口，然后在上面添加注解即可，将需要调用的其他服务的方法定义成抽象方法即可，不需要自己构建http请求。
 * 然后就像是调用自身工程的方法调用，而感觉不到是调用远程方法，使得编写客户端变得非常容易。
 * 类似于 mybatis 的 @Mapper注解 。
 *
 * Feign的一个机制就是使用了动态代理，如果你对某个接口定义了@FeignClient注解，那么Feign就会针对这个接口创建一个动态代理。
 * 然后，你调用这个接口的时候，其实就是调用了Feign为这个接口创建的动态代理，这个是核心中的核心。
 * Feign的动态代理会根据你在接口的定义的@RequestMapping等注解，来动态构造你要请求的服务地址，最后根据这个地址发送请求，解析相应。
 */
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignConsumerApplication.class, args);
    }
}
